package Compilador.Util;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ExpRegular {
    public static final String lexicoIdentificador = "([a-zA-Z_]([a-zA-Z_0-9])*)";
    public static final String lexicoNumero = "(0x[0-9a-fA-F]+)|([0-9]+(\\.[0-9]+)?((e-[0-9]+)|(E[0-9]+))?)";
    
    public static boolean analisarExpressao(String lexema, String expressao) {
        Pattern pattern = Pattern.compile(expressao);
        Matcher matcher = pattern.matcher(lexema);
        boolean retorno = false;

        if (matcher.find()) {
            retorno = true;
        }

        return retorno;
    }

    /**
     * Busca no texto um lexema v�lido que atenda � express�o
     * regular passada como par�metro
     * @param texto Texto a ser analisado
     * @param expressao Express�o a ser atendida.
     * @return <code>NULL</code> caso n�o exista lexema v�lido.
     */
    public static String obterLexema(String texto, String expressao) {
        String retorno = null;
        Pattern pattern = Pattern.compile(expressao);
        Matcher matcher = pattern.matcher(texto);

        if (matcher.find()) {
            retorno = texto.substring(matcher.start(), matcher.end());
        }
        return retorno;
    }
}
